feat: gRPC adapter for language-agnostic agent support#392
Merged
raahulrahl merged 10 commits intomainfrom Mar 23, 2026
Merged
Conversation
…gRPC settings Extract core bindufy logic into _bindufy_core() to support both Python (bindufy()) and gRPC (RegisterAgent) registration paths. Add caller_dir, skills_override, skip_handler_validation, and run_server_in_background parameters to enable gRPC service to pass pre-loaded skills, skip Python handler validation, and run uvicorn in background thread. Add GrpcSettings to settings.py with enabled flag, host/port config, worker
…t, Kotlin) - Add proto/agent_handler.proto defining BinduService and AgentHandler contracts - Add GrpcAgentClient as a drop-in replacement for manifest.run (zero changes to ManifestWorker) - Add BinduServiceImpl handling RegisterAgent from language SDKs - Add AgentRegistry for tracking remote agents - Add GrpcSettings with port 3774, configurable via GRPC__ env prefix - Extract _bindufy_core() from bindufy() for DRY reuse between Python and gRPC paths - Add `bindu serve --grpc` CLI command for SDK-spawned core process - Add TypeScript SDK (@bindu/sdk) with bindufy(), core-launcher, and gRPC server/client - Add Kotlin SDK (bindu-sdk) with bindufy(), CoreLauncher, and AgentHandler service - Add examples: typescript-langchain-agent, typescript-openai-agent, kotlin-openai-agent - Add 33 unit tests for gRPC client, registry, and service - Exclude generated proto files from linting in pre-commit config Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…proto path resolution in TypeScript SDK - Skip signal handler registration when uvicorn runs in background thread (gRPC flow) - Add threading.current_thread() check in setup_signal_handlers() - Update run_server() docstring to document main/background thread support - Fix TypeScript SDK proto path resolution to work from both src/ and dist/ - Add yaml dependency to TypeScript SDK package.json
…mple Delete committed node_modules directory including symlinks, package-lock.json, and all dependencies. These should be generated locally via npm install and excluded from version control.
…ignore for SDK artifacts - Add comprehensive gRPC testing guide with grpcurl examples in GRPC_LANGUAGE_AGNOSTIC.md - Document streaming limitation (HandleMessagesStream proto-defined but not implemented) - Add streaming support to GrpcAgentClient with use_streaming parameter and _handle_streaming() method - Remove unused --port flag from `bindu serve` CLI (only --grpc-port needed) - Update README.md with gRPC feature entry, separate unit/E2E test commands, and CI documentation
…ntation to README - Add TypeScript agent quickstart example with OpenAI SDK in Option 2 section - Document gRPC-based language support with Python/TypeScript/Kotlin code examples - Add TypeScript (OpenAI SDK, LangChain.js) and Kotlin (OpenAI Kotlin SDK) to supported frameworks - Update roadmap: mark gRPC/language-agnostic SDKs complete, add Rust SDK - Expand typescript-langchain-agent .env.example with storage/scheduler config
…onfigurations Add `# pragma: allowlist secret` comments to DATABASE_URL example values in TypeScript agent .env.example files to prevent false positives in secret scanning tools.
…actical focus Restructure gRPC docs to emphasize developer experience over implementation details: - Rewrite README.md with "The Problem/The Solution" framing showing why gRPC matters - Add concrete message flow example showing client → core → SDK → OpenAI path - Replace technical architecture-first approach with "what you write vs what Bindu handles" - Simplify client.md to focus on the callable bridge pattern and response
… practical focus Restructure SDK development documentation to emphasize developer experience: - Rewrite sdk-development.md with "What an SDK Does" framing showing the four core responsibilities - Replace architecture diagrams with concrete implementation steps - Add language-specific protoc command reference table (Rust, Go, Swift, C#) - Document HandleMessages contract with input/output format and error handling rules - Simpl
…practical examples Restructure api-reference.md to emphasize the gRPC contract between SDKs and core: - Reframe "Two gRPC Services" as "Services" with port-based organization - Add detailed RegisterAgent config_json format example showing Python bindufy() compatibility - Document "What the core does" for RegisterAgent (validation, ID generation, DID keys, x402, manifest, HTTP server) - Add response rules table for HandleMessages showing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
proto/agent_handler.protowithBinduService(registration) andAgentHandler(task execution) contractsGrpcAgentClientis a drop-in callable replacement formanifest.run— ManifestWorker, ResultProcessor, ResponseDetector require zero changes_bindufy_core()frombindufy()so both Python and gRPC registration paths share the same DID/auth/x402/A2A logic (DRY)@bindu/sdk) and Kotlin SDK (bindu-sdk) with auto core-launchertypescript-langchain-agent,typescript-openai-agent,kotlin-openai-agentArchitecture
Test plan
bindu serve --grpc, connect TS agent🤖 Generated with Claude Code